package cn.wolfcode.service;


import cn.wolfcode.domain.OrderInfo;
import cn.wolfcode.mq.OrderMQResult;

/**
 * Created by wolfcode-lanxw
 */
public interface IOrderInfoService {
    /**
     * 秒杀商品抢购
     * @param time 场次
     * @param seckillId 秒杀商品id
     * @param phone 用户手机号
     * @return 订单编号
     */
    String doSeckill(int time, Long seckillId, Long phone);

    /**
     * 根据订单编号查询订单信息
     * @param orderNo
     */
    OrderInfo find(String orderNo);

    /**
     * 订单超时未支付,回滚业务
     * @param orderMQResult 秒杀结果参数封装对象
     */
    void seckillOrderTimeout(OrderMQResult orderMQResult);

    /**
     * 在线支付业务
     * @param orderNo 订单编号
     * @return from支付表单
     */
    String payOnline(String orderNo);

    /**
     * 在线支付异步回调成功处理逻辑
     * @param orderNo 订单号
     */
    void payOnlineSuccess(String orderNo);

    /**
     * 在线支付退款业务
     * @param orderInfo 订单信息
     */
    void alipayRefund(OrderInfo orderInfo);

    /**
     * 手动取消订单
     * @param orderInfo 订单信息
     */
    void cancelOrder(OrderInfo orderInfo);

    /**
     * 积分支付业务
     * @param orderNo 订单号
     */
    void payIntergral(String orderNo);

    /**
     * 积分退款业务
     * @param orderInfo 订单信息
     */
    void intergralRefund(OrderInfo orderInfo);
}
